package interfacesSIAB;

import java.awt.BorderLayout;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;
import java.awt.GridBagLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import java.awt.Color;
import com.tutorialjava.bd.ControladorBD;
public class consulta_clientes extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanel = null;
	private JPanel jPanel1 = null;
	private JButton primero = null;
	private JButton anterior = null;
	private JButton siguiente = null;
	private JButton ultimo = null;
	private JTextField codigo = null;
	private JTextField ubicacion = null;
	private JLabel jLabel = null;
	private JLabel jLabel1 = null;
	private JButton nuevo = null;
	private JButton guardar = null;
	private JButton modificar = null;
	private JButton eliminar = null;
	private JButton deshacer = null;
	/**
	 * This is the default constructor
	 */
	public consulta_clientes() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(479, 256);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
		getDeshacer().doClick();
		
		
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setBackground(new Color(153, 153, 255));
			jContentPane.add(getJPanel(), null);
			jContentPane.add(getJPanel1(), null);
			jContentPane.add(getPrimero(), null);
			jContentPane.add(getAnterior(), null);
			jContentPane.add(getSiguiente(), null);
			jContentPane.add(getUltimo(), null);
			jContentPane.add(getNuevo(), null);
			jContentPane.add(getGuardar(), null);
			jContentPane.add(getModificar(), null);
			jContentPane.add(getEliminar(), null);
			jContentPane.add(getDeshacer(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			jLabel = new JLabel();
			jLabel.setText("codigo");
			jLabel.setBounds(new Rectangle(12, 11, 38, 16));
			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.setBounds(new Rectangle(33, 43, 252, 40));
			jPanel.setBackground(Color.gray);
			jPanel.add(getCodigo(), null);
			jPanel.add(jLabel, null);
		}
		return jPanel;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(5, 12, 85, 16));
			jLabel1.setText("Ubicacion");
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.setBounds(new Rectangle(31, 101, 249, 37));
			jPanel1.add(getUbicacion(), null);
			jPanel1.add(jLabel1, null);
			jPanel1.add(getUbicacion(), null);
		}
		return jPanel1;
	}

	/**
	 * This method initializes primero	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getPrimero() {
		if (primero == null) {
			primero = new JButton();
			primero.setBounds(new Rectangle(63, 169, 48, 26));
			primero.setText("<<");
			primero.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String sql = "select * from mesa order by idMesa limit 0,1";
					try {
						ControladorBD.addSql(sql);
						ControladorBD.execute();
						
						if (ControladorBD.finRecordSet()) 
						{
						   getCodigo().setText( ControladorBD.getInt("idMesa").toString());	
						getUbicacion().setText(ControladorBD.getString("ubicacion"));	
						}
						
						
					} catch (Exception e2) {
						JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e2.getMessage());
					    e2.printStackTrace();
					}
					
				}
			});
		}
		return primero;
	}

	/**
	 * This method initializes anterior	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getAnterior() {
		if (anterior == null) {
			anterior = new JButton();
			anterior.setBounds(new Rectangle(121, 169, 48, 26));
			anterior.setText("<");
			anterior.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					Integer cdActual = Integer.parseInt(getCodigo().getText());
					String sql = "select * from mesa where idMesa <" +cdActual+ " order by idMesa desc limit 0,1";
					try {
						ControladorBD.addSql(sql);
						ControladorBD.execute();
						
						if (ControladorBD.finRecordSet()) 
						{
						   getCodigo().setText( ControladorBD.getInt("idMesa").toString());	
						getUbicacion().setText(ControladorBD.getString("ubicacion"));	
						}
						
						
					} catch (Exception e2) {
						JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e2.getMessage());
					    e2.printStackTrace();
					}
				}
			});
		}
		return anterior;
	}

	/**
	 * This method initializes siguiente	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getSiguiente() {
		if (siguiente == null) {
			siguiente = new JButton();
			siguiente.setBounds(new Rectangle(179, 169, 48, 26));
			siguiente.setText(">");
			siguiente.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
					Integer cdActual = Integer.parseInt(getCodigo().getText());
					String sql = "select * from mesa where idMesa >" +cdActual+ " order by idMesa asc limit 0,1";
					try {
						ControladorBD.addSql(sql);
						ControladorBD.execute();
						
						if (ControladorBD.finRecordSet()) 
						{
						   getCodigo().setText( ControladorBD.getInt("idMesa").toString());	
						getUbicacion().setText(ControladorBD.getString("ubicacion"));	
						}
						
						
					} catch (Exception e2) {
						JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e2.getMessage());
					    e2.printStackTrace();
					}
				
				
				
				}
			});
		}
		return siguiente;
	}

	/**
	 * This method initializes ultimo	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getUltimo() {
		if (ultimo == null) {
			ultimo = new JButton();
			ultimo.setBounds(new Rectangle(237, 169, 48, 26));
			ultimo.setText(">>");
			ultimo.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					Integer cdActual = Integer.parseInt(getCodigo().getText());
					String sql = "select * from mesa where idMesa >" +cdActual+ " order by idMesa desc limit 0,1";
					try {
						ControladorBD.addSql(sql);
						ControladorBD.execute();
						
						if (ControladorBD.finRecordSet()) 
						{
						   getCodigo().setText( ControladorBD.getInt("idMesa").toString());	
						getUbicacion().setText(ControladorBD.getString("ubicacion"));	
						}
						
						
					} catch (Exception e2) {
						JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e2.getMessage());
					    e2.printStackTrace();
					}
				}
			});
		}
		return ultimo;
	}

	/**
	 * This method initializes codigo	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getCodigo() {
		if (codigo == null) {
			codigo = new JTextField();
			codigo.setBounds(new Rectangle(92, 8, 116, 21));
			codigo.setEnabled(true);
			codigo.setText("0");
			
			codigo.setDisabledTextColor(Color.black);
			codigo.addFocusListener(new java.awt.event.FocusAdapter() {
				public void focusLost(java.awt.event.FocusEvent e) {
					//coje lo que se digita y lo trasnforma en un int para poder operar
					Integer cdActual = Integer.parseInt(getCodigo().getText());
					String sql = "select * from mesa where idMesa = " +cdActual+ " order by idMesa desc limit 0,1";
					try {
						ControladorBD.addSql(sql);
						ControladorBD.execute();
						
						if (ControladorBD.finRecordSet()) 
						{
							//estas lineas extraen la informacion de la base de datos
							// y la pegan en los jtexfield
						   getCodigo().setText( ControladorBD.getInt("idMesa").toString());	
						   getUbicacion().setText(ControladorBD.getString("ubicacion"));	
						}
						
						
					} catch (Exception e2) {
						JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e2.getMessage());
					    e2.printStackTrace();
					}
					
					
				}
			});
		}
		return codigo;
	}

	/**
	 * This method initializes descripcion	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getUbicacion() {
		if (ubicacion == null) {
			ubicacion = new JTextField();
	      	
			ubicacion.setText("");
			ubicacion.setEnabled(false);
			ubicacion.setEditable(true);
			ubicacion.setBounds(new Rectangle(107, 8, 137, 21));
		}
		return ubicacion;
	}

	/**
	 * This method initializes nuevo	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getNuevo() {
		if (nuevo == null) {
			nuevo = new JButton();
			nuevo.setBounds(new Rectangle(337, 32, 101, 24));
			nuevo.setText("Nuevo");
			nuevo.addActionListener(new java.awt.event.ActionListener() {
				//Se crea el evento al boton nuevo para poder poner
				//en estado de edicion la aplicacion
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
					setEstadoEdicion(true);
					
					try {
						
						Integer ultimocodigo= ControladorBD.maximoValorCampo("mesa", "idMesa");
						getCodigo().setText((ultimocodigo +1) + "");
						
					} catch (Exception e2) {
						
					
					}
					
					getUbicacion().setRequestFocusEnabled(true);
				    getUbicacion().setText(""); 
				}
			});
		}
		return nuevo;
	}

	/**
	 * This method initializes guardar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getGuardar() {
		if (guardar == null) {
			guardar = new JButton();
			guardar.setBounds(new Rectangle(337, 69, 101, 24));
			guardar.setText("Guardar");
			guardar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				//Ahorea se gurada o se inserta el registro dependiendo si existe na la BD.
					try {
					Integer cod= Integer.parseInt(getCodigo().getText());
					Integer codBuscar= (Integer) ControladorBD.buscarCampo("mesa", "idMesa", cod, "idMesa");
				    String ubicacion = getUbicacion().getText();
					String sql= "";
				    if(codBuscar == null)//el registro no esta en la tabla
				    {
				    	
				    	sql= "insert into mesa(idMesa,ubicacion,codigo_mesa) values("+cod+",'"+ubicacion +"',"+null+") ";
				    	
				    }
				    else// Si existe en la tabla
				    {
				    	
				    	sql= "update mesa set ubicacion = '"+ubicacion+"' where idMesa="+cod+"";
				    	
				    }
				    
				    
				    
						ControladorBD.addSql(sql);
						ControladorBD.execute();
						getDeshacer().doClick();
						
						   
							} 
					catch (final Exception e3) {
						JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e3.getMessage());
						e3.printStackTrace();
						
						}
				   
				    	
				    	
				    	
				    	
				}
			});
		}
		return guardar;
	}

	/**
	 * This method initializes modificar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getModificar() {
		if (modificar == null) {
			modificar = new JButton();
			modificar.setBounds(new Rectangle(337, 106, 101, 24));
			modificar.setText("Modificar");
			modificar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				//solamente habilita los campos para poder editar. Estado de Edicion	
				
					setEstadoEdicion(true);
					getUbicacion().setRequestFocusEnabled(true);
					
					
					
					
					
				}
			});
		}
		return modificar;
	}

	/**
	 * This method initializes eliminar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getEliminar() {
		if (eliminar == null) {
			eliminar = new JButton();
			eliminar.setBounds(new Rectangle(337, 143, 101, 24));
			eliminar.setText("Eliminar");
			eliminar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					//elimina un registro y muestra en el formulario el registro anterior
				try {
					
					Integer cod= Integer.parseInt(getCodigo().getText());
					String sql="delete from mesa where idMesa="+cod+"";
					
					ControladorBD.addSql(sql);
					ControladorBD.execute();
				
					
					
				} catch (Exception e2) {
					JOptionPane.showMessageDialog(null,"Ocurrio un error en la BD" + e2.getMessage());
					e2.printStackTrace();
					
				}
				setEstadoEdicion(false);	
				getAnterior().doClick();	
					
					
					
				
				}
			});
		}
		return eliminar;
	}

	/**
	 * This method initializes deshacer	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getDeshacer() {
		if (deshacer == null) {
			deshacer = new JButton();
			deshacer.setBounds(new Rectangle(337, 173, 101, 24));
			deshacer.setText("Deshacer");
			deshacer.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				//deshabilita los campos. queda en estado de consulta y muestra en el formulario
			   // el ultimo registro
					
				setEstadoEdicion(false);
				getUltimo().doClick();
				
				}
			});
		}
		return deshacer;
	}
	
	//METODO PARA HABILITAR Y DESHABILITAR LOS CONTROLES 
	//PARA PRODUCIR ESTADOS EN EL FORMULARIO DE CONSULTA Y EDICION
	
	public void  setEstadoEdicion(boolean isEdicion) {
		
		getCodigo().setEnabled( ! isEdicion);
		getUbicacion().setEnabled(isEdicion);
		
		getPrimero().setEnabled( ! isEdicion);
		getAnterior().setEnabled( ! isEdicion);
		getSiguiente().setEnabled( ! isEdicion);
		getUltimo().setEnabled( ! isEdicion);
		
		getNuevo().setEnabled( ! isEdicion);
		getGuardar().setEnabled( isEdicion);
	    getModificar().setEnabled( ! isEdicion);
	    getEliminar().setEnabled( ! isEdicion);
	    getDeshacer().setEnabled( isEdicion);
		
		
		
		
		
	}
	
	
	
	
	
	
	
	
	
	

}  //  @jve:decl-index=0:visual-constraint="49,53"
